﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RedesII_DTL;
using System.Data.Common;

namespace RedesII_DAL
{
    public class UserDao
    {

        public UserDto GetById(int id)
        {
            string query = "SELECT * FROM Usuario WHERE IdUsuario = " + id.ToString();
            var user = BuscaRegistro(query);
            if (user != null)
            {
                return user;
            }
            else
                return null;
        }

        public bool InsertUser(UserDto user)
        {
            string query =
                String.Format("INSERT INTO Usuario (Login, Password) VALUES ({0}, {1})",
                user.Login, user.Pwd);
            return ExecutaComando(query);
        }


        protected UserDto BuscaRegistro(string query)
        {
            // criando a conexão com o banco
            DaoFactory factory = new DaoFactory();
            DbConnection connection = factory.CriaConexao();
            // criando o comando que vai ser executado
            DbCommand cmd = factory.CriaComando();
            cmd.Connection = connection;
            cmd.CommandText = query;
            // abrindo a conexão
            connection.Open();
            // executando o comando e obtendo um reader (leitor de dados)
            DbDataReader reader = cmd.ExecuteReader();
            // criando um usuario
            UserDto usuario = new UserDto();
            // para cada registro lido pelo reader
            while (reader.Read())
            {
                usuario.Login = (string)reader["Login"];
                usuario.Pwd = (string)reader["Password"];
            }
            // fechando a conexão
            connection.Close();
            return usuario;
        }

        protected virtual bool ExecutaComando(string query)
        {
            DaoFactory factory = new DaoFactory();
            // criando a conexão com o banco
            DbConnection connection = factory.CriaConexao();
            // criando o comando que vai ser executado
            DbCommand cmd = factory.CriaComando();
            cmd.Connection = connection;
            cmd.CommandText = query;
            // abrindo a conexão
            connection.Open();
            // executando o comando e obtendo um reader (leitor de dados)
            int res = cmd.ExecuteNonQuery();
            // fechando a conexão
            connection.Close();
            return res > 0;
        }

       

       
    }
}
